Prática Machine Learning - CUNEF

Alumno: Amadeo Gustavo Ancarani

Definición del problema:

En base a los datos de los accidentes de tráfico canadienses desde 1999 a 2014, se intenta predecir si una persona involucrada en un accidente fallecería.

Se tomarán las caracterisicas de los accidentes y de las personas involucradas para aplicar algoritmos de Machine Learning. Estos algoritmos aplicarán diferentes técnicas estadisticas y matemáticas para lograr obtener la mejor clasificación posible.

El motivo principal por el cual realizamos estas estimaciones es las aseguradoras tienen que inmovilizar capital para pagar estas casuísticas. Entonces, se busca minimizar el capital inmovilizado dado que se pierde la rentabilidad de tener el dinero invertido, sin afectar el hecho de que este dinero inmovilizado estará disponible para cubrir de alguna manera las necesidades de quienes sean afectados por estos hechos.

Scripts planteados:

Los scripts utilizados para realizar esta solución son los siguientes y realizarán las tareas desarrollas:

Resumiendo: Se desea predecir si una persona que ha sufrido un accidente de tráfico, a través de la información tanto del individuo como del hecho, fallecerá.

Los pasos a realizar en el presente Notebook son:

  1. Análisis inicial de los datos y preprocesamiento inicial
  2. Primer Tratamiento de missings (no codificados, realmente missings en el dataset)
  3. Tratamiento de Variables numericas
  4. Tratamiento de variables categoricas
  5. Segundo Tratamiento de missings.
  6. Aplicación de algoritmos de tratamiento de datos (encoding)
  7. Análisis de correlación de las variables
  8. Exportar los resultados

1. Análisis inicial de los datos y preprocesamiento inicial

Importo librerias

Importo el dataset

El conjunto de datos contiene variables que no estan disponibles para la aseguradora en el momento en que se presenta un anuncio de accidente en su plataforma. Estas deben eliminarse para realizar modelos ya que se estaría introduciendo información que el modelo en el momento en que lo queremos aplicar no tendría.

Analisis generales de la tabla

Dimensión

Debemos no considerar registros duplicados ya que pueden modificar nuestro analisis

Separo el dataset de entrenamiento del dataset de test

Tipos de datos

Exploración de la variable objetivo y tratamiento

Genero la variable a estimar (y)

2. Primer Tratamiento de Missings (no codificados)

Observar cuantos valores missing (sin codificar)

La variable 'C_VEHS' cuanta con la codificación para valores faltantes, rellenamos estos missing con el valor correspondiente

Tratamiento de Variables numericas

Obtengo las Variables Numericas

En primer lugar, observamos los valores captados por las variables numericas para detectar posibles outliers no desde un punto de vista estadistico, sino considerando valores no detallados en el diccionario de datos.

Descripción: No veo datos atipicos como valores negativos, asignaciones de valores no detallados en el diccionario de datos, etc.

El siguiente paso es realizar graficos de conteo analizar las distribuciones de las variables

En todas las variables salvo en 'P_AGE' y 'V_YEAR', los valores 'N' son minoritarios. Contrariamente en estas dos restantes, los valores tipo 'U' son los más observados.

Análisis de valores faltantes en variables numéricas

Vamos a revisar la distribución de la variable objetivo de los valores tipo 'U' y tipo 'N' por separado. El objetivo es corroborar si la falta de información nos puede ayudar a discriminar a las personas fallecidas del resto.

Análisis de la distribucion de variable objetivo cuando observamos datos tipo U en las variables numericas

Como mencionamos anteriormente, solo consideraremos los casos de 'V_YEAR' y 'P_AGE', dado que son realmente bajas las observaciones nulas, y los desvíos de la distribución de la variable objetivo en estos casos se pueden deber a anomalías por tener tan pocos datos. A estas variables se considerará imputarlas o no considerarlas más adelante.

Ahora realizaremos el mismo análisis pero para los datos tipo 'N':

Análisis de la distribucion de variable objetivo cuando observamos datos tipo N en las variables numericas

Igual que antes, solo consideraremos los casos de 'V_YEAR' y 'P_AGE', dado que son realmente bajas las observaciones nulas, y los desvíos de la distribución de la variable objetivo en estos casos se pueden deber a anomalías por tener tan pocos datos. A estas variables se considerará imputarlas o no considerarlas más adelante.

Generaré variables dummies ya que al transformar a estas variables a numéricas, tanto las observaciones N comos las U se tranformarán en NA y no tienen el mismo tratamiento dada la diferencia en las distribuciones de la variable objetivo en cada caso particular

4. Tratamiento de Variables Categóricas

Obtengo a las variables categicas

Verificamos que los datos se encuentren dentro del diccionario de datos provisionado

Descripción

Verificamos que los datos concuerdan con los valores esperados

Análisis de valores faltantes en variables categóricas

Vamos a revisar la distribución de la variable objetivo de los valores tipo 'U' y tipo 'N' por separado. El objetivo es corroborar si la falta de información nos puede ayudar a discriminar a las personas fallecidas del resto.

Análisis de la distribucion de variable objetivo cuando observamos datos tipo N en las variables categóricas

Solo consideraremos los casos de 'V_TYPE' y 'P_SAFE', dado que son realmente bajas las observaciones nulas para el resto de las variables. Estos desvíos de la distribución de la variable objetivo en estos casos se pueden deber a anomalías por tener tan pocos datos. A estas variables se considerará imputarlas o no considerarlas más adelante.

Ahora realizaremos el mismo análisis pero para los datos tipo 'U':

Análisis de la distribucion de variable objetivo cuando observamos datos tipo U en las variables categóricas

Las variables que tendrán como una categoría 'NA' aceptada para el tratamiento de encoding de estas variables categóricas son:

Las variables que serán imputadas las observaciones serán:

Ahora realizaremos el mismo análisis pero para los datos tipo 'Q', es necesario detallar que no se tratan de variables tipo NA sino que estamos hablando de observaciones tipo 'otros':

Recodificación de variables categóricas

En este punto, la idea es tranformar a las variables categóricas de forma tal, que podremos realizar diferentes encodings propuestos (OneHotEncoding si la variable es binaria o TargetEncoding si la variable es multiclase), o revisar posible existencias de valores outliers y así filtrarlos.

V_TYPE

Para la variable 'V_TYPE', las observaciones tipo 'UU' y 'QQ' son tan pocas, que las filtraremos del dataset

Análisis de la distribución del target sobre las categorias en V_TYPE

P_PSN

Para la variable 'V_TYPE', las observaciones tipo 'NN', 'UU' y 'QQ' son tan pocas, que las consideraremos como una categoría única, ya que para todas estas observaciones, tenemos un aumento de la probabilidad de ser fallecido en caso de tener estas categorías para 'V_TYPE'

Análisis de la distribución del target sobre las categorias en P_PSN

P_SAFE

Como en los casos 'UU', 'NN' y 'QQ' observamos la misma tendencia, es decir, una mayor probabilidad de fallecer con estas observaciones, decido agruparlas en una unica variable

Análisis de la distribución del target sobre las categorias en P_SAFE

P_USER

Análisis de la distribución del target sobre las categorias en P_USER

P_SEX

Se filtrarán las observaiones tipo 'N' y se mantendrán a las observaciones 'U'

Análisis de la distribución del target sobre las categorias en P_SEX

V_YEAR

Lo que interesa en lugar de saber el año de fabricación de los autos, es la antigüedad que los mismos tenían en la fecha del accidente

Observo valores negativos en la antigüedad de los autos, valores que serán filtrados en el dataset

C_CONF

Con esta variable realizaremos un target encoding, las observaciones concuerdan a lo esperado.

Mantendremos las variables 'U' y 'Q' por separado dado que tienen un efecto contrario ante la variable objetivo.

Análisis de la distribución del target sobre las categorias en C_CONF

C_RCFG

Agruparé observaciones que representan muy pocos datos en una variable 'OT'

Mismo tratamiento que la variable anterior

Con esta variable realizaremos un target encoding, las observaciones concuerdan a lo esperado.

Mantendremos las variables 'UU' y 'QQ' por separado dado que tienen un efecto contrario ante la variable objetivo.

Análisis de la distribución del target sobre las categorias en C_RCFG

C_WTHR

Filtraremos a las observaciones 'U'dado que son muy poscas observaciones, además agruparemos a las observaciones 5, 6 y 7 en una adiocional llamada 'O'

Mismo tratamiento que la variable anterior

Con esta variable realizaremos un target encoding, las observaciones concuerdan a lo esperado.

Mantendremos las variables 'U' por separado dado que tienen un efecto ante la variable objetivo.

Análisis de la distribución del target sobre las categorias en C_WTHR

C_RSUR

Agruparemos a las observaciones 9, 8, 7 y 6 en una adiocional llamada 'O'

Mismo tratamiento que la variable anterior

Con esta variable realizaremos un target encoding, las observaciones concuerdan a lo esperado.

Mantendremos las variablews 'U' y 'Q' por separado dado que tienen un efecto contrario ante la variable objetivo.

Análisis de la distribución del target sobre las categorias en C_RSUR

5. Segundo Tratamiento de Valores Faltantes

Obtengo las variables con missings y aplico un simple imputer (la primera idea fue aplicar una metodología de KKNImputer, pero por limitaciones computacionales, se propuso este imputador menos demandante de recursos).

Procedo a descartar a las variables creadas anteriormente que no aportan información ya que contamos con muy pocos valores 1:

6. Aplicación de algoritmos de tratamiento de datos (encoding)

Tranformamos a las horas, los dias de la semana y los meses en dos variables tomando el seno y el coseno de la variable, para captar el movimiento cíclico de la hora, ya que después de las 24 comienza un ciclo desde 0 a 24 nuevamente. Lo mismo con el resto de las variables

7. Análisis de Correlaciones de las variables

Como podemos notar, no existen correlaciones significantes este las variables del Dataset.

Un punto para destacar es que no tenemos una variable que nos ayude a predecir en forma mayoritaria a la varaible 'C_SEV', es decir, el conjunto de datos como un todo realizarán un aporte equitativo para realizar las predicciones.

8. Exportamos el dataset de entrenamiento resultante.